home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #2
/
Monster Media No. 2 (Monster Media)(1994).ISO
/
pcboard
/
bcmx120.zip
/
DOPROT.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1994-06-29
|
7KB
|
526 lines
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN001
Boolean BOOLEAN002
Boolean BOOLEAN003
Boolean BOOLEAN004
Boolean BOOLEAN005
Boolean BOOLEAN006
Boolean BOOLEAN007
Boolean BOOLEAN008
Boolean BOOLEAN009
Boolean BOOLEAN010
Boolean BOOLEAN011
Boolean BOOLEAN012
Boolean BOOLEAN013
Integer INTEGER001
Integer INTEGER002
Integer INTEGER003
Integer INTEGER004
Integer INTEGER005
Integer INTEGER006
Integer INTEGER007
Integer INTEGER008
Integer INTEGER009
Integer INTEGER010
Integer INTEGER011
Integer INTEGER012
Integer INTEGER013
Integer INTEGER014
Integer INTEGER015
Integer INTEGER016
Integer INTEGER017
Integer INTEGER018
Integer INTEGER019
Integer INTEGER020
Integer INTEGER021
Integer INTEGER022
Integer INTEGER023
Integer INTEGER024
Integer INTEGER025
String STRING001
String STRING002
String TSTRING003(100)
String STRING004
String STRING005
String STRING006
String STRING007
String STRING008
String STRING009
String TSTRING010(20)
String STRING011
String STRING012
String STRING013
String STRING014
String STRING015
String STRING016
String STRING017
String STRING018
String STRING019
Int INT001
Int INT002
Int INT003
Int INT004
BigStr BIGSTR001
;------------------------------------------------------------------------------
BOOLEAN001 = 1
STRING009 = PPEPath()
BOOLEAN005 = 0
BOOLEAN006 = 1
BOOLEAN008 = 0
BOOLEAN009 = 0
BOOLEAN007 = 0
If (AnsiOn()) Goto LABEL001
Newline
PrintLn "No ansi"
End
:LABEL001
BOOLEAN010 = 0
BOOLEAN011 = 0
BOOLEAN013 = 0
BOOLEAN012 = 0
Goto LABEL016
:LABEL002
INTEGER023 = INTEGER005
INTEGER019 = INTEGER006
STRING015 = STRING004
INTEGER024 = INTEGER001
INTEGER025 = INTEGER002
BOOLEAN010 = 0
BOOLEAN011 = 0
STRING016 = "NORMAL"
BOOLEAN012 = 0
BOOLEAN013 = 1
BOOLEAN004 = 0
BOOLEAN002 = 0
BOOLEAN001 = 1
If (INTEGER019 > 15) Redim TSTRING010, INTEGER019
BIGSTR001 = STRING007
INTEGER013 = 1
STRING013 = Chr(13)
STRING014 = Chr(27)
BOOLEAN003 = IsNonStop()
StartDisp 1
INTEGER013 = 1
:LABEL003
INTEGER014 = INTEGER023
DefColor
If (BOOLEAN007) Goto LABEL004
AnsiPos INTEGER024, INTEGER025
DispFile BIGSTR001, 1 + 4
:LABEL004
If (INTEGER019 >= INTEGER023) Then
INTEGER019 = INTEGER023
Endif
DefColor
If (BOOLEAN006) Goto LABEL005
INTEGER017 = INTEGER022 * 2
For INTEGER015 = INTEGER022 To INTEGER021
INTEGER009 = INTEGER015
Gosub LABEL010
AnsiPos INTEGER010, INTEGER011
Print Space(INTEGER003)
INTEGER017 = INTEGER017 + 2
Next
Goto LABEL006
:LABEL005
BOOLEAN006 = 0
:LABEL006
If (INTEGER013 + INTEGER019 <= INTEGER014) INTEGER020 = INTEGER013 + INTEGER019 - 1
If (INTEGER013 + INTEGER019 > INTEGER014) INTEGER020 = INTEGER014
INTEGER022 = INTEGER013
INTEGER021 = INTEGER020
INTEGER017 = INTEGER013 * 2
INTEGER016 = 1
For INTEGER015 = INTEGER013 To INTEGER020
INTEGER016 = INTEGER015 % INTEGER019
If (INTEGER016 == 0) INTEGER016 = INTEGER019
INTEGER010 = INTEGER024
INTEGER011 = INTEGER025 + INTEGER016 - 1
AnsiPos INTEGER010, INTEGER011
Print STRING006, TSTRING003(INTEGER015)
INTEGER017 = INTEGER017 + 2
Inc INTEGER016
Next
BOOLEAN007 = 0
INTEGER009 = INTEGER013
Gosub LABEL010
AnsiPos INTEGER010, INTEGER011
Print STRING015, Left(StripAtx(TSTRING003(INTEGER013)), INTEGER003)
:LABEL007
STRING011 = Inkey()
:LABEL008
Select Case (STRING011)
Case "UP", "LEFT", ","
If ((STRING011 == "LEFT") && (STRING016 == "PULLDOWNMENU")) Then
Gosub LABEL015
KbdStuff ","
End
Endif
Gosub LABEL011
If (INTEGER013 % INTEGER019 == 1) Then
INTEGER013 = INTEGER013 + INTEGER019 - 1
If (INTEGER013 > INTEGER014) INTEGER013 = INTEGER014
Else
INTEGER013 = INTEGER013 - 1 % INTEGER019
Endif
Gosub LABEL012
Goto LABEL007
Case "DOWN", "RIGHT", "."
If ((STRING011 == "RIGHT") && (STRING016 == "PULLDOWNMENU")) Then
Gosub LABEL015
KbdStuff "."
End
Endif
If ((STRING011 == "DOWN") && (STRING016 == "PULLDOWNMAIN")) Then
STRING011 = STRING013
Goto LABEL008
Endif
Gosub LABEL011
If (INTEGER013 % INTEGER019 == 0) Then
INTEGER013 = INTEGER013 - INTEGER019 - 1
ElseIf (INTEGER013 == INTEGER014) Then
INTEGER013 = INTEGER022
Else
INTEGER013 = INTEGER013 + 1
Endif
Gosub LABEL012
Goto LABEL007
Case "?"
DefColor
Gosub LABEL013
Goto LABEL007
Case STRING013
INTEGER015 = INTEGER013
INTEGER010 = GetX()
INTEGER011 = GetY()
INTEGER008 = INTEGER013
Gosub LABEL017
If (BOOLEAN008) Then
BOOLEAN008 = 0
STRING011 = "<"
Goto LABEL008
ElseIf (BOOLEAN009) Then
BOOLEAN009 = 0
STRING011 = ">"
Goto LABEL008
Endif
If (BOOLEAN010) Goto LABEL009
AnsiPos INTEGER010, INTEGER011
Goto LABEL007
:LABEL009
If (BOOLEAN005) Then
BOOLEAN005 = 0
Goto LABEL007
Endif
AnsiPos INTEGER024, INTEGER025
DispStr BIGSTR001
For INTEGER015 = INTEGER022 To INTEGER021
INTEGER009 = INTEGER015
Gosub LABEL010
AnsiPos INTEGER010, INTEGER011
If (INTEGER013 == INTEGER015) Then
Print STRING015, Left(StripAtx(TSTRING003(INTEGER015)), INTEGER003)
Continue
Endif
Print STRING006, TSTRING003(INTEGER015)
Next
AnsiPos INTEGER010, INTEGER011
Goto LABEL007
Case "HOME"
Gosub LABEL011
INTEGER013 = INTEGER022
Gosub LABEL012
Goto LABEL007
Case "END"
Gosub LABEL011
INTEGER013 = INTEGER021
Gosub LABEL012
Goto LABEL007
Case ">", "CTRL PGDN"
If (INTEGER021 + INTEGER019 <= INTEGER014) Then
INTEGER013 = INTEGER021 + 1
BOOLEAN007 = 1
Goto LABEL003
Else
If (INTEGER021 <> INTEGER014) Then
INTEGER013 = INTEGER021 + 1
BOOLEAN007 = 1
Goto LABEL003
Endif
If (BOOLEAN011) Then
INTEGER013 = 1
BOOLEAN007 = 1
Goto LABEL003
Endif
Sound 1000
Delay 2
Sound 0
Goto LABEL007
Endif
Case "<", "CTRL PGUP"
If (INTEGER022 - INTEGER019 >= 1) Then
INTEGER013 = INTEGER022 - INTEGER019
BOOLEAN007 = 1
Goto LABEL003
Else
If (BOOLEAN011) Then
INTEGER012 = INTEGER014 % INTEGER019
If (INTEGER012 == 0) INTEGER012 = INTEGER019
INTEGER013 = INTEGER014 - INTEGER012 + 1
BOOLEAN007 = 1
Goto LABEL003
Endif
Sound 1000
Delay 2
Sound 0
Goto LABEL007
Endif
Case STRING014
If (!BOOLEAN004) Goto LABEL007
DefColor
If (BOOLEAN013) Then
DefColor
Cls
Endif
If (!BOOLEAN003) StartDisp 2
End
Case Else
If (STRING011 == "") Goto LABEL007
INTEGER017 = (INTEGER013 + 1) * 2
INTEGER018 = INTEGER017 - 3
INTEGER016 = 1
For INTEGER015 = INTEGER022 To INTEGER021
If (TSTRING010(INTEGER015) == Upper(STRING011)) Then
Gosub LABEL014
INTEGER013 = INTEGER015
If (!BOOLEAN001) Goto LABEL007
STRING011 = STRING013
Goto LABEL008
Endif
Next
Goto LABEL007
End Select
End
:LABEL010
INT001 = INTEGER009 % INTEGER019
If (INT001 == 0) INT001 = INTEGER019
INTEGER010 = INTEGER024
INTEGER011 = INTEGER025 + INT001 - 1
Return
:LABEL011
INT001 = INTEGER013 % INTEGER019
If (INT001 == 0) INT001 = INTEGER019
INTEGER010 = INTEGER024
INTEGER011 = INTEGER025 + INT001 - 1
AnsiPos INTEGER010, INTEGER011
Print STRING006, Space(INTEGER003)
AnsiPos INTEGER010, INTEGER011
Print TSTRING003(INTEGER013)
Return
:LABEL012
INT001 = INTEGER013 % INTEGER019
If (INT001 == 0) INT001 = INTEGER019
INTEGER010 = INTEGER024
INTEGER011 = INTEGER025 + INT001 - 1
AnsiPos INTEGER010, INTEGER011
Print STRING015, Left(StripAtx(TSTRING003(INTEGER013)), INTEGER003)
Return
:LABEL013
STRING012 = PPEPath() + "graph\prothlp"
AnsiPos 1, 23
SaveScrn
StartDisp 2
Cls
DispFile STRING012, 1 + 4
Wait
StartDisp 1
RestScrn
AnsiPos INTEGER010, INTEGER011
Return
:LABEL014
INT001 = INTEGER013 % INTEGER019
If (INT001 == 0) INT001 = INTEGER019
INTEGER010 = INTEGER024
INTEGER011 = INTEGER025 + INT001 - 1
AnsiPos INTEGER010, INTEGER011
Print STRING006, Space(INTEGER003)
AnsiPos INTEGER010, INTEGER011
Print TSTRING003(INTEGER013)
INTEGER017 = INTEGER015 * 2
INT001 = INTEGER015 % INTEGER019
If (INT001 == 0) INT001 = INTEGER019
INTEGER010 = INTEGER024
INTEGER011 = INTEGER025 + INT001 - 1
AnsiPos INTEGER010, INTEGER011
Print STRING015, Left(StripAtx(TSTRING003(INTEGER015)), INTEGER003)
Return
:LABEL015
DefColor
For INTEGER015 = 0 To 0
AnsiPos 0, INTEGER015
Print Space(0 - 0 + 1)
Next
Return
:LABEL016
Cls
STRING001 = ReadLine(PCBDat(), 45)
STRING002 = PPEPath() + "cfg\prot.cfg"
FreshLine
INTEGER007 = Random(ToInteger(ReadLine(STRING002, 1)) - 1) + 1
Tokenize ReadLine(STRING002, INTEGER007 + 1)
STRING019 = PPEPath() + "graph\prottext"
If (LangExt() <> "") Then
If (Exist(STRING019 + LangExt())) STRING019 = STRING019 + LangExt()
Endif
INTEGER001 = GetToken()
INTEGER002 = GetToken()
INT003 = GetToken()
INT004 = GetToken()
INTEGER006 = GetToken()
INTEGER003 = GetToken()
STRING004 = GetToken()
STRING006 = GetToken()
STRING008 = GetToken()
STRING007 = PPEPath() + "graph\prot1"
INTEGER004 = 1
STRING005 = ReadLine(STRING001, INTEGER004)
While (STRING005 <> "") Do
TSTRING010(INTEGER004) = Upper(Left(STRING005, 1))
INT002 = Len(STRING005)
STRING018 = Mid(STRING005, 5, INT002 - 6 - 4)
STRING018 = Mid(STRING018, InStr(STRING018, ",") + 1, Len(STRING018))
STRING017 = STRING008 + TSTRING010(INTEGER004) + STRING006 + " " + STRING018
TSTRING003(INTEGER004) = STRING017
Inc INTEGER004
STRING005 = ReadLine(STRING001, INTEGER004)
EndWhile
INTEGER005 = INTEGER004 - 1
Goto LABEL002
:LABEL017
FCreate 1, PPEPath() + "work\prottmp." + String(PcbNode()), 1, 0
FPutLn 1, TSTRING010(INTEGER008)
FClose 1
AnsiPos INT003, INT004
Print ReplaceStr(ReadLine(STRING019, 1), "%PROT%", TSTRING010(INTEGER008))
Delay 18
End
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 6 End
; 3 Cls
; 1 Wait
; 86 Goto
; 143 Let
; 13 Print
; 1 PrintLn
; 54 If
; 2 DispFile
; 1 FCreate
; 1 FClose
; 1 FPutLn
; 4 StartDisp
; 6 DefColor
; 16 Gosub
; 6 Return
; 3 Delay
; 2 Inc
; 1 Newline
; 1 Tokenize
; 2 KbdStuff
; 1 DispStr
; 18 AnsiPos
; 1 FreshLine
; 1 SaveScrn
; 1 RestScrn
; 4 Sound
; 1 Redim
;
;
; ■ Functions used :
;
; 4 *
; 10 %
; 41 +
; 20 -
; 34 ==
; 3 <>
; 5 <
; 7 <=
; 3 >
; 12 >=
; 41 !
; 13 &&
; 11 ||
; 2 Len(
; 2 Upper()
; 2 Mid()
; 5 Left()
; 4 Space()
; 2 Chr()
; 1 InStr()
; 1 Random()
; 4 StripAtx()
; 1 Inkey()
; 1 String()
; 1 PCBDat()
; 6 PPEPath()
; 1 PcbNode()
; 6 ReadLine()
; 9 GetToken()
; 1 Exist()
; 3 LangExt()
; 1 AnsiOn()
; 1 GetX()
; 1 GetY()
; 1 ReplaceStr()
; 1 ToInteger()
; 1 IsNonStop()
;
;------------------------------------------------------------------------------
;
; Analysis flags : d
;
; d - Access PCBOARD.DAT ■ 2
; Program gets the full pathname to PCBOARD.DAT, this may be usefull
; for many PPE so they can find various informations on the system
; (system paths, max number of lines in messages, ...) but it may also
; be a way to gather vital informations.
; ■ Search for : PCBDAT()
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 5 For/Next
; 1 While/EndWhile
; 19 If/Then or If/Then/Else
; 1 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------